home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / dsp / 56ktools / a5611.tz / a5611 / examples / tdsg.basic.a56 < prev    next >
Text File  |  1992-08-11  |  3KB  |  129 lines

  1. ;***************************************************************
  2. ;
  3. ;    basic run-time
  4. ;
  5. ;***************************************************************
  6.     include    'ioequ.inc'
  7. ;
  8. ; vectors
  9. ;
  10.     org    p:$0000
  11.         movep    #$0f0f,x:m_bcr            ;wait: RAM:0;ROM,I/O:15
  12.     jmp    <start
  13.  
  14.     org    p:$000C
  15.     jsr    <ssi_int            ;go handle SSI interrupt
  16.     org    p:$0010
  17. ssix    jsr    <ssi_int            ;go handle SSI interrupt
  18.  
  19. ;
  20. ; global data areas
  21. ;
  22.     org    x:$0
  23. in_l    dc    0                   ;input queue
  24. in_r    dc    0
  25. in_ls    dc    0                   ;saved left
  26. in_rs    dc    0                   ;and right
  27. out_l    dc    0                ;output queue
  28. out_r    dc    0
  29.  
  30. savea10 dc    0                ;places to save regs
  31. savea2    dc    0                ;N.B. uses YMEM also!
  32. saveb10    dc    0
  33. saveb2    dc    0
  34. savex    dc    0
  35. savey    dc    0
  36.  
  37. ;
  38. ; global register assignments
  39. ;
  40. ; r5,m5        Stereo input queue pointer (alternating L/R)
  41. ; r4,m4        Stereo output queue pointer (alternating L/R)
  42.  
  43. ;***************************************************************
  44. ;
  45. ;    initialization
  46. ;
  47. ;***************************************************************
  48.     org    p:$40        ;$$$ move to external RAM
  49. start
  50.     movec    #$0300,sr            ;go to IPL 3
  51.  
  52.     jsr    hf_init
  53. ;
  54. ; set up SSI
  55. ;
  56.     movep    #2<<13|1<<8,x:m_cra        ;16-bit word, 2 time slots
  57.     movep    #1<<14|3<<12|1<<11|1<<9,x:m_crb    ;sync,network,enable,SC2 in
  58.  
  59.     movep    #0,x:m_pcddr            ;port C is SSI/SCI
  60.     movep    #$1FF,x:m_pcc            ;port C is SSI/SCI
  61.     jsr    init_stereo
  62. ;
  63. ; enable interrupts
  64. ;
  65.     movep    #1<<12,x:m_ipr            ;SSI at 1, others off
  66.     movec    #0,sr                ;lower IPL
  67.     jset    #0,x:m_sr,*            ;sync up with left chan
  68.     jclr    #0,x:m_sr,*            ;
  69.     jsr    init_stereo
  70.  
  71.     jmp    mainloop
  72.  
  73. init_stereo
  74.     move        #>in_l,r5        ;base of stereo input queue
  75.     move        #>out_l,r4        ;base of stereo output queue
  76.      movec        #2-1,m5            ;modulus of stereo input queue
  77.     movec        #2-1,m4            ;modulus of stereo output queue
  78.     rts
  79.  
  80. ;***************************************************************
  81. ;
  82. ;    main loop
  83. ;
  84. ;***************************************************************
  85. mainloop
  86. ;       
  87. ;    do any polling or foreground tasks here
  88. ;
  89.     jmp    <mainloop
  90.  
  91. ;***************************************************************
  92. ;
  93. ;    interrupt service
  94. ;
  95. ;***************************************************************
  96.     
  97. ;
  98. ; SSI interrupt routine
  99. ;
  100.  
  101. ; keep in on-chip RAM
  102.  
  103. ssi_int
  104.     movep    x:m_rx,x:(r5)+            ;bring in L or R
  105.     movep    x:(r4)+,x:m_tx            ;and output L or R
  106.     jsset    #0,x:m_sr,hf_comp        ;
  107.     rti
  108.  
  109. saveregs
  110.     move        a2,x:<savea2
  111.     move        a1,x:<savea10
  112.     move        a0,y:<savea10
  113.     move        x,l:<savex
  114.     move        b2,l:<saveb2
  115.     move        b1,x:<saveb10
  116.     move        b0,y:<saveb10
  117.     move        y,l:<savey
  118.     rts
  119.  
  120. restregs
  121.     move        l:<savea10,a
  122.     move        x:<savea2,a2
  123.     move        l:<savex,x
  124.     move        l:<saveb10,b
  125.     move        x:<saveb2,b2
  126.     move        l:<savey,y
  127.     rts
  128.  
  129.